import axios from "axios";
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import message from '@/util/alert.js'
import router from '../router'
NProgress.configure({
	easing: 'ease',  // 动画方式    
	speed: 1000,  // 递增进度条的速度    
	showSpinner: false, // 是否显示加载ico    
	trickleSpeed: 200, // 自动递增间隔    
	minimum: 0.3 // 初始化时的最小百分比
})
//创建axios实例 
const service = axios.create({
	// baseURL: "http://172.19.48.92:80",
	baseURL: process.env.BASE_API,
	timeout: 5000,//超时时间
	headers: {
		// "Content-type": "application/json;charset=utf-8",
	}
})
//请求拦截
service.interceptors.request.use((config) => {//请求的数据
	NProgress.start() // 设置加载进度条(开始..)
	config.headers = config.headers || {}  // 没有数据的话就设置为空设置为数据
	if (localStorage.getItem("Authorization")) {//先确保登录
		config.headers.Authorization = localStorage.getItem("Authorization") || ""
	}

	if (config.url !== '/login') {
		config.url = '/manage' + config.url
	}
	return config
}, error => {
	NProgress.done() // 设置加载进度条(结束..)
	message.error('网络异常')
	//处理错误请求
	return Promise.reject(error)
})

//响应拦截：后端返回来的结果
service.interceptors.response.use((res) => {
	const code = res.data.code//code是后端的状态码
	NProgress.done() // 设置加载进度条(结束..)

	if (code !== 200) {
		if (res.data.msg) {
			if (res.data.msg == '未登录') {
				localStorage.removeItem('Authorization')
				localStorage.removeItem("AuthenticationCode");
				router.push('/login')
				message.info('登录已经过期,请重新登录')
				return Promise.reject('登录已经过期,请重新登录')
			} else {
				message.error(res.data.desc ? res.data.desc : res.data.msg)
				return Promise.reject(res.data.desc)
			}

		} else {
			message.error('服务器请求出错')
		}
		return Promise.reject(res)
	} else {
		//请求成功
		return Promise.resolve(res.data)
	}
}, (err) => {
	NProgress.done() // 设置加载进度条(结束..)
	message.error('服务器网络错误')
	//处理错误响应
	return Promise.reject(err)
})

export default service
